// pages/recommendSongs/recommendSongs.js
import api from '../../../utils/request'
import pubsub from 'pubsub-js'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    day: '',
    month: '',
    // 每日推荐歌单数据
    recommendList: [],
    // 记录音乐下标 标识
    index: 0
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 进入当前页面先判断用户是否已经登录
    let userInfo = wx.getStorageSync('userInfo')
    if (!userInfo) {
      // 未登录，跳转至登录页
      wx.showToast({
        title: '请先登录！',
        icon: 'none',
        success: () => {
          setTimeout(() => {
            wx.reLaunch({
              url: '/pages/login/login',
            })
          }, 1000)
        }
      })
    } else {
      // 日期初始化
      this.setData({
        day: new Date().getDate(),
        month: new Date().getMonth() + 1
      })
      // 获取歌单数据
      this.getRecommendSongs()
      // 订阅来自songDetail页面发布消息
      pubsub.subscribe('switchType', (msg, type) => {
        let {recommendList, index } = this.data
        // console.log(msg, type);
        // console.log(recommendList);
        if (type === 'pre') {// 上一首
          (index === 0) && (index = recommendList.length) // 防止下标index为-1
          index -= 1
        } else { // 下一首
          (index === recommendList.length - 1) && (index = -1)
          index += 1
        }
        // 更新index的值
        this.setData({ index })
        // console.log(index);
        let musicId = recommendList[index].id
        // console.log(musicId);
        pubsub.publish('musicId', musicId)
      })
    }
  },

  // 获取每日推荐数据
  async getRecommendSongs() {
    let songsList = await api.request('/recommend/songs')
    // console.log(songsList);
    this.setData({
      recommendList: songsList.recommend
    })
  },
  // 跳转至歌曲播放详情
  toSongDetail(event) {
    // 获取参数
    // console.log(event);
    let { song, index } = event.currentTarget.dataset
    this.setData({
      index
    })
    wx.navigateTo({
      url: '/songPackage/pages/songDetail/songDetail?musicId=' + song.id,
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})